According to the Java Card technology, during the deployment of an application, the application goes through various states before it is actually ready to be used by a final user. The states which are of interest in the context of the present invention are Loaded, Installed, and Personalized states:                The Loaded state indicates that the application has been loaded from a terminal, for example a desktop computer, onto the Java card which is, for example, inserted in a reading device (CAD device) in communication with said terminal;        The Installed state indicates that the loaded application has been instantiated on the card, but the personalization data of the application has not yet been initialized;        The Personalized state indicates that the installed application has been initialized, personalization data of the application having been set up with particular values. For example, the personalization data USER_NAME of an application has been initialized with the value “Name.”        
In order to effect a change of state, a series of command or operations must be executed. These commands generally imply data exchanges between the terminal and the Java card. These exchanges require a certain amount of communication time.
Loaded and Installed states are two basic states which cannot be avoided and are necessary. They are mandatory for every possible type of application. It is not possible to avoid these states without becoming non-compliant with the Java Card Specification.
On the other hand, the Personalized state is somewhat of an optional state. There are applications that have no personalization data and which thus become fully operational once the installation has been performed, i.e. while still in the Installed state, while others applications require a personalization of their data before becoming fully operational. The Java Card Specification does not provide an optimized method for personalization. Even the Java Card Specification refuses to define a specific personalization method, assuming that the method will be different for each application, depending, in particular, on how the application is built. On the one hand, this lack of standardization benefits the application developers in terms of flexibility, but, on the other hand, this flexibility in the software development can lead to a lack of efficiency in the manufacturing process.
The personalization time, i.e. the communication time necessary to complete the full personalization of the application, varies based on the amount of personalization data required by the application. When considering a single card, the personalization time can be seen as small and insignificant. But when considering a production environment where thousands or even millions of cards are to be produced, this personalization time is significant in terms of throughput, and thus affects the overall cost of the production of cards.